package com.ddwl.goods.mapper;

import com.ddwl.common.dao.mapper.TkMapper;
import com.ddwl.goods.dto.ItemDetailDto;
import com.ddwl.goods.dto.SkuDto;
import com.ddwl.goods.model.Item;
import com.ddwl.goods.model.ItemSgin;
import com.ddwl.schema.bo.goods.ItemListApiBo;
import com.ddwl.schema.bo.goods.ItemListBo;
import com.ddwl.schema.bo.goods.ItemSearchBo;
import com.ddwl.goods.dto.ItemStatisticsDto;
import com.ddwl.schema.vo.goods.ItemConListVo;
import com.ddwl.schema.vo.goods.ItemVo;
import com.ddwl.schema.vo.goods.retail.DiscountItemSelectPageVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * @author Fu Zhaohui
 * @version 1.0.0
 * @date 2019/6/12 13:46
 */
@Repository
public interface ItemMapper extends TkMapper<Item> {

    ItemVo findByBarcode(String barcode);

    List<Item> findConAll(@Param("params") ItemSearchBo params);

    List<Item> findConAllNew(@Param("params") ItemSearchBo params);

    List<Item> findAll(@Param("params") ItemSearchBo params);

    /**
     * 按审核状态统计
     * @return
     */
    List<ItemStatisticsDto> statisticsAuditing(@Param("params") ItemSearchBo params);
    /**
     * 按上下架状态统计
     */
   List<ItemStatisticsDto> statisticsShelf(@Param("params") ItemSearchBo params);

    /**
     * 统计该阶段审批通过的
     * @param stage
     * @return
     */
    Integer statisticsPass(@Param("Stage")Integer stage);

    /**
     * 查询热销商品（品牌热销）
     * @param itemSearchBo
     * @return
     */
    List<ItemVo> findHotItem(@Param("params")ItemSearchBo itemSearchBo);

    List<Item> findApiAll(@Param("param") ItemListApiBo param);

    /**
     * 批量更新商品标签为null
     * @param
     */
    void updateItemSginNull(@Param("itemSgins") ItemSgin itemSgin);

    List<SkuDto> querySkuWithItem(@Param("param") ItemListBo param);

    Integer querySkuWithItemCount(@Param("param") ItemListBo param);

    /**
     * 根据id获取商品详情
     * @param id
     * @return
     */
    ItemVo getDetailsById(@Param("id") String id);

    /**
     * 根据id列表批量获取商品详情列表
     * @param ids
     * @return
     */
    List<ItemVo> findListByIds(@Param("ids") Collection<String> ids);

    /**
     * 获取店铺商品详情
     * @param id
     * @return
     */
    ItemDetailDto getItemDetailById(@Param("id") String id);

    /**
     * 获取店铺商品详情
     * @param id
     * @return
     */
    Item findItemWithShop(@Param("id") String id, @Param("shopId") String shopId);
    void changeCategoryCode(@Param("map") Map<String, String> map);

    /**
     * 打折商品选择列表
     * @param shopId
     * @return
     */
    List<DiscountItemSelectPageVo> discountItemSelectList(@Param("shopId") String shopId);
    /**
     * 批量修改商品库存
     * @param itemList
     */
    void batchUpdateStock(@Param("itemList") List<Item> itemList);

    /**
     * 批量修改商品信息
     * @param items
     */
    void batchUpdateItemDiscountInfo(@Param("itemList") List<Item> items);
}
